frontend/pages/e/[uuid]/assign/[passengerId].tsx (view raw)
1import {PropsWithChildren} from 'react';
2import {useRouter} from 'next/router';
3import pageUtils from '../../../../lib/pageUtils';
4import EventLayout from '../../../../layouts/Event';
5import {EventByUuidDocument} from '../../../../generated/graphql';
6import AssignPassenger from '../../../../containers/AssignPassenger';
7
8interface Props {
9 eventUUID: string;
10 announcement?: string;
11}
12
13const Page = (props: PropsWithChildren<Props>) => {
14 const {push} = useRouter();
15 return (
16 <EventLayout
17 {...props}
18 titleKey="passenger.assign.title"
19 Tab={AssignPassenger}
20 goBack={() => push(`/e/${props.eventUUID}/waitingList`)}
21 />
22 );
23};
24
25export const getServerSideProps = pageUtils.getServerSideProps(
26 async (context, apolloClient) => {
27 const {uuid} = context.query;
28 const {host = ''} = context.req.headers;
29 let event = null;
30
31 // Fetch event
32 try {
33 const {data} = await apolloClient.query({
34 query: EventByUuidDocument,
35 variables: {uuid},
36 });
37 event = data?.eventByUUID?.data;
38 } catch (error) {
39 return {
40 notFound: true,
41 };
42 }
43
44 return {
45 props: {
46 eventUUID: uuid,
47 metas: {
48 title: event?.attributes?.name || '',
49 url: `https://${host}${context.resolvedUrl}`,
50 },
51 },
52 };
53 }
54);
55
56export default Page;